package miku.firstgame.net
{
	import flash.events.IEventDispatcher;

	/**
	 *
	 * @author andy
	 *
	 */
	public interface IConnection extends IEventDispatcher
	{
		/**
		 * 连接是否已经建立了
		 * @return 连接状态true，否则false
		 */
		function get connected():Boolean;

		//TODO TODOID201004050003 这个方法本不需要定义的，但是由于WrappedSocket的包装，故需要定义
		function ping(pingFunction:Function = null):void;

//		/**
//		 * 请求服务器，等待服务器返回
//		 * @param request 请求对象，在这个对象中处理返回和timeout
//		 */
//		function requestServer(request:IRequest):void;

		/**
		 * 关闭连接
		 */
		function close():void;

		/**
		 * 发送消息
		 * @param data 数据是xml格式的
		 */
		function send(data:Object):void;

		/**
		 * 连接
		 * @param host 主机
		 * @param port 端口
		 */
		function connect(host:String, port:int):void;

		/**
		 * 设置连接事件的处理者，处理connect, close ,failed 和 data, 请参考 IConnectionHandler
		 * @param connectHandler 事件处理者
		 */
		function setHandler(connectHandler:IConnectionHandler):void

//		function set publicKey(key:String):void;
//		function set hashKey(key:String):void;
		//function set startProtocolNum(num:int):void;

//		function get publicKey():String;
//		function get hashKey():String;
		//function get startProtocolNum():int;
	}
}
